/// 测试m3u8下载功能
use std::sync::Arc;
use videoDownloader::{
    config::DownloadConfigBuilder,
    downloader::DownloaderFactory,
    progress::ProgressReporterFactory,
    retry::RetryStrategyFactory,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("🧪 测试m3u8下载功能");
    
    // 构建配置和组件
    let config = DownloadConfigBuilder::new()
        .concurrent(4)
        .retry_count(3)
        .temp_dir("temp_test".to_string())
        .build()?;
    
    let progress_reporter = ProgressReporterFactory::create_total_only_reporter();
    let retry_strategy = RetryStrategyFactory::exponential_backoff(config.retry_count, 1000);
    
    let downloader = DownloaderFactory::create_dual_progress_downloader(
        config,
        Arc::from(progress_reporter),
        retry_strategy,
    )?;
    
    // 测试URL - 使用一个简单的测试URL
    let test_url = "https://example.com/test.m3u8";
    let output_file = "test_output.ts";
    
    println!("📥 测试下载: {}", test_url);
    println!("💾 输出文件: {}", output_file);
    
    // 注意：这个测试URL是虚构的，实际测试时需要替换为真实的m3u8 URL
    match downloader.download(test_url, output_file).await {
        Ok(_) => {
            println!("✅ 下载成功!");
        }
        Err(e) => {
            println!("❌ 下载失败: {}", e);
            println!("💡 这是预期的，因为我们使用的是测试URL");
        }
    }
    
    Ok(())
}